home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / comm / www / Aminet.awnp.lha / Aminet.awnp / Aminet.AWNP next >
Text File  |  2001-03-14  |  37KB  |  1,152 lines

  1. /* Aminet.AWNP by Bruce Steers <bsteers@ukonline.co.uk> */
  2. ver='$VER: Aminet.awnp 3.2 (14.03.2001)'
  3.  
  4. /* Written with the aid of Clipper :) */
  5. /* http://web.ukonline.co.uk/bsteers/   */
  6.  
  7. /* Using the Excellent AWNPipe by Bill Parker */
  8. /* http://web.ukonline.co.uk/awnpipe/   */
  9.  
  10. if ~show('l','rexxsupport.library') then if ~addlib('rexxsupport.library',0,-30,0) then do;say 'Error. can''t open rexxsupport.library'; exit; end
  11. if ~showlist(h,'AWNPIPE') then address command 'mount awnpipe:'
  12. if ~showlist(h,'AWNPIPE') then do; say 'Can''t Open Awnpipe: Device..' ; exit(1); end
  13.  
  14. if ~show('l','rexxdossupport.library') then if ~addlib('rexxdossupport.library',0,-30,0) then call exitreq('can''t open rexxdossupport.library')
  15. if ~show('l','rxsocket.library')       then if ~addlib('rxsocket.library',0,-30,0)       then call exitreq('can''t open rxsocket.library')
  16.  
  17.   ERROR: IF (RC>0)&(RC~='RC') THEN DO; call req('"ERROR 'RC':' ErrorText(RC) 'line: 'SIGL'" "_OK"');exit ; END
  18.  SYNTAX: IF (RC>0)&(RC~='RC') THEN DO; call req('"Syntax Error 'RC':' ErrorText(RC) 'line: 'SIGL'" "_OK"'); exit ; END
  19.    HALT: IF (RC>0)&(RC~='RC') THEN DO; call req('"HALT : Interrupt call! line: 'SIGL'" "_OK"'); exit; END
  20. FAILURE: IF (RC>0)&(RC~='RC') THEN DO; call req('"FAILURE :' ErrorText(RC) 'line: 'SIGL'" "_OK"'); exit; END
  21.  
  22. SIGNAL ON ERROR
  23. SIGNAL ON HALT
  24. SIGNAL ON FAILURE
  25. SIGNAL ON SYNTAX
  26.  
  27.  
  28. vern=word(ver,3) ; scre=d2c(27)
  29. deftitle=word(ver,2)' 'word(ver,3)
  30. labinfo='Bruce Steers <bsteers@ukonline.co.uk>'
  31.  
  32. ibase=showlist(l,'intuition.library',,a)
  33. call forbid;
  34. scrA=next(ibase,56)
  35. scrW=c2d(IMPORT(offset(scrA,12),2))
  36. scrH=c2d(IMPORT(offset(scrA,14),2))
  37. screen=word(IMPORT(next(scrA,26)),1)
  38. call permit
  39. WIN='0 10 'scrW' 100'
  40. PWIN='0 10 'scrW' 100'
  41. parse source . . . prog .
  42. lp=max(lastpos('/',prog),lastpos(':',prog))
  43. parse var prog progpath +lp progname
  44. progname=strip(progname)
  45. prefsname=prog'.cfg'
  46. LF='0A'x ; CRLF='0A0D'x
  47. fin="D0A"x
  48. chsite=0; noget=1;  wait=0
  49.  
  50. call BuildStrings()
  51. call getfont()
  52.  
  53. dir='ram:'
  54.  
  55. parse arg args
  56.  
  57. parse value with FILE TO NAME SetIn
  58. MODE='SEARCH'
  59.  
  60.  if args=='?' then do;
  61.    if index(address(),'AMIRC.')==1 then do
  62.    ech='p "'d2c(27)'bAminet.awnp"'
  63.    'echo 'ech' Aminet.awnp By 'labinfo
  64.    'echo 'ech locales(MSG_ArgHelp)
  65.    'echo 'ech'-'
  66.    'echo 'ech' NAME,LENGTH/N,DIR/K,SITE/N,README/T,ASKDIR/T,BUBBLE/T,WAIT/S,ONRETURN/T'
  67.     'echo 'ech' NAME      ; 'locales(RDA_NAM)
  68.     'echo 'ech' LENGTH/N  ; 'locales(RDA_LEN)
  69.     'echo 'ech' DIR/K     ; 'locales(RDA_DIR)
  70.     'echo 'ech' SITE/N    ; 'locales(RDA_SIT)
  71.     'echo 'ech' README/T  ; 'locales(RDA_REA)
  72.     'echo 'ech' ASKDIR/T  ; 'locales(RDA_ASK)
  73.     'echo 'ech' BUBBLE/T  ; 'locales(RDA_BUB)
  74.     'echo 'ech' WAIT/S    ; 'locales(RDA_WAI)
  75.     'echo 'ech' ONRETURN/S; 'locales(RDA_ONR)
  76.    exit
  77.    end
  78.    else do
  79.    call writeln(STDOUT,'Aminet.awnp By 'labinfo)
  80.    call writeln(STDOUT,locales(MSG_ArgHelp)||lf)
  81.     call writeln(STDOUT,'NAME      ; 'locales(RDA_NAM))
  82.     call writeln(STDOUT,'LENGTH/N  ; 'locales(RDA_LEN))
  83.     call writeln(STDOUT,'DIR/K     ; 'locales(RDA_DIR))
  84.     call writeln(STDOUT,'SITE/N    ; 'locales(RDA_SIT))
  85.     call writeln(STDOUT,'README/T  ; 'locales(RDA_REA))
  86.     call writeln(STDOUT,'ASKDIR/T  ; 'locales(RDA_ASK))
  87.     call writeln(STDOUT,'BUBBLE/T  ; 'locales(RDA_BUB))
  88.     call writeln(STDOUT,'WAIT/S    ; 'locales(RDA_WAI))
  89.     call writeln(STDOUT,'ONRETURN/S; 'locales(RDA_ONR)||lf)
  90.    call writech(STDOUT,'NAME,LENGTH/N,DIR/K,SITE/N,README/T,ASKDIR/T,BUBBLE/T,WAIT/S,ONRETURN/T,WIN/K,PWIN/K : ')
  91.    args=readln(STDIN)
  92.    end
  93.  end
  94.  
  95. rd=readargs(args,'NAME,LENGTH/N,DIR/K,SITE/N,README/T,ASKDIR/T,BUBBLE/T,WAIT/S,ONRETURN/T,WIN/K,PWIN/K,MODE/K')
  96.  
  97. if ~rd then call exitreq( locales(MSG_ERRORWITH) locales(MSG_ARGHELP))
  98.  
  99.  select
  100.  when UPPER(MODE)="DOWN" then call getfiles()
  101.  otherwise call search_GUI()
  102.  end
  103. exit
  104.  
  105.  
  106.  
  107. search_GUI:
  108. call loadprefs()
  109. call storedefs()
  110.  
  111. if ~open(pipe,'awnpipe:Aminet.awnp/xc') then exit(2)
  112.  
  113. parse var WIN winl wint winw winh .
  114. call topipe('"Aminet.awnp 'locales(MSG_SEARCHFIND) vern' Bruce" defg left 'winl' top 'wint' width 'winw' height 'winh' a v si so h m ig it "AmFind.Zzz" ii "'prog'" ps "'screen'" st "Aminet.awnp 'locales(MSG_SEARCHFIND) vern' By Bruce Steers <bsteers@ukonline.co.uk>"')
  115.  
  116. if bubble then ch='&'; else; ch='%'
  117. men=locales(MNU_MENU)
  118. men=translate(men,ch,'¶')
  119.  
  120. call topipe('menu gt "'men'"')
  121. rqf =topipe('getfile ua dr i')
  122.  
  123. call SetFontID()
  124.  
  125. call topipe('layout weih 0 b 0')
  126. info=topipe('fuelgauge cj defn=0 gt "'labinfo'"')
  127. abrt=topipe('button gt "'locales(MSG_ABORT)'" weiw 0 dis 1')
  128. call topipe('le')
  129.  
  130. lvw =topipe('listbrowser 'lfontid' m weih 100 sc="¤" st a v lbl "'locales(MSG_LISTLABELS)'"')
  131. call topipe('layout weih 0 'gfontid' b 0')
  132. rec =topipe('button tc weiw 0 gt "'locales(MSG_RECENT)'"')
  133. vrm =topipe('button tc weiw 0 gt "'locales(MSG_README)'" dis 1')
  134. get =topipe('button tc weiw 0 gt "'locales(MSG_GET)'" dis 1')
  135. sch =topipe('button tc weiw 0 gt "'locales(MSG_SEARCH)'" dis 1')
  136. ptn =topipe('string tc lj gt "'name'"')
  137. call topipe('label gt "*n*n 'locales(LAB_MAXHITS)':"')
  138. hit =topipe('integer minn 1 maxn 500 weiw 0 minc 3 defn 'length' a')
  139. call topipe('le')
  140.  
  141. call topipe('layout 'gfontid' weih 0 b 0')
  142. call topipe('label gt "*n'locales(LAB_GetR)':"')
  143. rme =topipe('checkbox s 'readme'')
  144. call topipe('label gt "*n 'locales(LAB_ASKD)':"')
  145. dlp =topipe('checkbox tc s 'askdir'')
  146. call topipe('label gt "  "')
  147. sng =topipe('chooser s 'site-1' tc pu cl 'do_srvlst()'')
  148. call topipe('label gt "  "')
  149. xit =topipe('button 'gfontid' tc weiw 0 gt "'locales(MSG_QUIT)'" c')
  150. call topipe('le')
  151.  
  152. call topipe('open')  /*  WINDOW IS OPEN */
  153. call mhlp()
  154. call topipe('id 'ptn' s 0')
  155.  
  156. /* test stuff
  157. if debug then do
  158. call topipe('id 'lvw' sc="¤" addn gt "clipper.lha¤dev/amos¤45K¤198¤AMOS program for creating bob banks"')
  159. call topipe('id 'lvw' sc="¤" addn gt "QuickClip.lha¤gfx/misc¤31K¤222¤IFF-ILBM Picture Clipper"')
  160. call topipe('id 'lvw' sc="¤" addn gt "DeltaClipper.lha¤pix/imagi¤672K¤422¤Imagine traces"')
  161. call topipe('id 'lvw' sc="¤" addn gt "LB-03.jpg¤pix/trace¤36K¤118¤Battle ship LB-03 (Panther Clipper R"')
  162. call topipe('id 'lvw' sc="¤" addn gt "Clipper.lha¤util/irc¤51K¤214¤Multi-clipboard support for all prog"')
  163. call topipe('id 'lvw' sc="¤" addn gt "clipper.lha¤util/edit¤50K¤48¤VERY Handy Listview tool to set the"')
  164. call topipe('id 'lvw' sc="¤" addn gt "Clipper_AWNP.lha¤util/wb¤62K¤48¤Handy Listview tool to set the Clipb"')
  165. end
  166. */
  167.  
  168. if (name~='') & wait==0 then call searchfunc
  169.  
  170.  do while ~eof(pipe)
  171.  call writeln(pipe,'id 0 read'); WIN=readln(pipe);
  172.  call topipe('con')
  173.  in=readln(pipe)
  174.  parse var in in1 in2 in3 in4 in5 in6
  175.   select
  176.   when in1=='' then nop
  177.   when in1=='iconify' then call topipe('id 0 s '64-(32*in2))
  178.   when in1=='menu' then call Mmenu()
  179.   when in1=='close' then call go()
  180.   when in1=='help' then if bubble==1 then call Mhelp()
  181.   when in1=='gadget' then call Mgadget()
  182.   when in1=='tick' then nop
  183.   otherwise say in
  184.   end
  185.  end
  186. go:  /* Check for Changed Settings */
  187. cp=0
  188. cs=''
  189. if chsite then do; cp=cp+1; cs=cs||locales(MSG_AMIPRF)'*n'; end
  190. if O_LENGTH~=LENGTH then do; cp=cp+1; cs=cs||locales(LAB_MAXHITS)'*n'; end
  191. if O_PWIN~=PWIN then do; cp=cp+1; cs=cs||locales(MSG_PDIMS)'*n'; end
  192. if O_WIN~=WIN then do; cp=cp+1; cs=cs||locales(MSG_SDIMS)'*n'; end
  193. if O_README~=README then do; cp=cp+1; cs=cs||locales(MSG_GETR)'*n'; end
  194. if O_DIR~=DIR then do; cp=cp+1; cs=cs||locales(MSG_DL_PATH)'*n'; end
  195. if O_ASKDIR~=ASKDIR then do; cp=cp+1; cs=cs||locales(MSG_POPD)'*n'; end
  196. if O_SITE~=SITE then do; cp=cp+1; cs=cs||locales(MSG_DEFS)'*n'; end
  197. if O_BUBBLE~=BUBBLE then do; cp=cp+1; cs=cs||locales(MSG_BUBL)'*n'; end
  198. if O_STARTRX~=STARTRX then do; cp=cp+1; cs=cs||locales(MSG_ONCOM)' Command *n'; end
  199. if O_ENDRX~=ENDRX then do; cp=cp+1; cs=cs||locales(MSG_OFFCOM)' Command *n'; end
  200. if O_ONRETURN~=ONRETURN then do; cp=cp+1; cs=cs||locales(LAB_ONRET)' *n'; end
  201.  
  202. if cp~=0 then
  203.   if req('"'locales(MSG_ChPrf)'*n*n*n'strip(cs)'"') then
  204.     call saveprefs()
  205.  
  206.  
  207. call close(pipe)
  208. if endrx~='' then address command endrx
  209. exit
  210.  
  211.  
  212. exitreq:
  213. call req('"'arg(1)'" "_OK"')
  214. exit
  215.  
  216.  
  217. Mmenu:
  218. select
  219. when in3==0 then call req('"Aminet.awnp*n'ver'*n*nBruce Steers <bsteers@ukonline.co.uk>*n *nhttp://web.ukonline.co.uk/bsteers/*nhttp://web.ukonline.co.uk/awnpipe/" "'locales(MSG_OK)'"')
  220. when in3==2 then do; if in5==0 & bubble==1 then call topipe('bubble'); bubble=in5; end
  221. when in3==4 then call prefs()
  222. when in3==6 then call newver()
  223. when in3==8 then call go()
  224. otherwise nop
  225. end
  226. return
  227.  
  228. Mgadget:
  229. select
  230. when in2==xit then call go()
  231. when in2==prf then call prefs()
  232. when in2==sch then  call searchfunc()
  233. when in2==get then call initDL();
  234. when in2==sng then do; site=in3+1; parse var ams.site '://'amd'/' .; end
  235.  when in2==ptn then do; parse var in . . name; name=strip(name);  if name=='' then do;
  236.   call topipe('id 'sch' dis 1');
  237.  return; end; call topipe('id 'sch' dis 0');
  238.  if ONRETURN then do; in2=sch; call Mgadget(); end
  239.  end
  240. when in2==hit then length=in3
  241. when in2==rec then do; call topipe('id 'abrt' dis 0'); call recent(); call topipe('id 'abrt' dis 1'); end
  242. when in2==rme then readme=in3
  243. when in2==dlp then askdir=in3
  244. when in2==vrm then do; call topipe('id 0 s 256'); call viewr(); call topipe('id 0 s 512'); end
  245.  
  246. when in2==lvw then call listfunc()
  247. otherwise nop
  248. end
  249. return
  250.  
  251. listfunc:
  252. parse var in . . . . seld; seld=strip(seld)
  253. seld0=words(seld)
  254. if seld0==0 then do;
  255. call topipe('id 'get' dis 1');
  256. call topipe('id 'vrm' dis 1');
  257. noget=1
  258. return; end
  259.  
  260. if noget then do; noget=0; call topipe('id 'get' dis 0');call topipe('id 'vrm' dis 0'); end
  261.  
  262. if in3==16 then do
  263. ans=req('"'locales(MSG_SELFUNC)'" gadgets "'locales(MSG_VIEWR)'" "'locales(MSG_GET)'" "'locales(MSG_ABORT)'"')
  264. if ans==1 then call viewr()
  265. if ans==2 then call getfile()
  266. end
  267.  
  268. return
  269.  
  270. searchfunc:
  271. if startrx~='' then address command startrx
  272. call clear()
  273. call topipe('id 'sch' dis 1');
  274. call topipe('id 'rec' dis 1');
  275. call topipe('id 'hit' dis 1 ref');
  276. call topipe('id 'ptn' dis 1 ref');
  277. call topipe('id 'rme' dis 1 ref');
  278. call topipe('id 'dlp' dis 1 ref');
  279. call topipe('id 'sng' dis 1');
  280. call topipe('id 'abrt' dis 0');
  281.  
  282. call topipe('id 'lvw' list 0');
  283. srcres=dosearch()
  284. if srcres~="" then call req('"'srcres'" "_OK"')
  285. call topipe('id 'lvw' list 1');
  286. call topipe('id 'info' defn 0')
  287.  
  288. call topipe('id 'abrt' dis 1')
  289. call topipe('id 'sch' dis 0');
  290. call topipe('id 'rec' dis 0');
  291. call topipe('id 'ptn' dis 0 ref');
  292. call topipe('id 'hit' dis 0 ref');
  293. call topipe('id 'rme' dis 0 ref');
  294. call topipe('id 'dlp' dis 0 ref');
  295. call topipe('id 'sng' dis 0');
  296. call topipe('id 'ptn' s 0');
  297. return
  298.  
  299. dosearch:
  300. call dlrep(locales(MSG_RESLV)' 'amd)
  301.  
  302. sin.addraddr=resolve(amd)
  303. if sin.addraddr=-1 then return(locales(MSG_ERROR) locales(MSG_RESLV) amd)
  304. sin.addrport=1848
  305.  
  306. if checkabort() then return(locales(MSG_ABRTED))
  307.  
  308. sin.addrFamily = "INET"
  309.  
  310. sock=socket("INET","STREAM")
  311. if sock=-1 then return(locales(MSG_ERROR) locales(MSG_SOCK))
  312.  
  313. if checkabort() then return(locales(MSG_ABRTED))
  314.  
  315. call dlrep(locales(MSG_CON2))
  316. if connect(sock,"SIN")<0 then return(locales(MSG_ERROR) locales(MSG_CON2) amd)
  317.  
  318. if checkabort() then return(locales(MSG_ABRTED))
  319.  
  320.  
  321. request="max "length||CRLF
  322. request=request"find" name||CRLF
  323. request=request"max"CRLF
  324. request=request||CRLF
  325.  
  326.   call dlrep(locales(MSG_OKSENDING))
  327.   if send(sock,request)<0 then return(locales(MSG_ERROR) locales(MSG_SENDSOCK))
  328.  
  329. if checkabort() then return(locales(MSG_ABRTED))
  330.  
  331. call dlrep(locales(MSG_READREP))
  332. preinf=locales(MSG_SEARCHING)
  333. resl=1
  334.   do until resl<1
  335.   if checkabort() then return(locales(MSG_ABRTED))
  336.   if (resl=recvline(sock,"TEXT",256))<0 then return(locales(MSG_ERROR) locales(MSG_RESVSOCK))
  337.     select
  338.     when index(text,'Missing argument.')~=0 then leave
  339.  
  340.       when left(text,27)=='*** No matching files found' then do
  341.       call req('"'name locales(MSG_NOMATCH)'" "'locales(MSG_OK)'"')
  342.       leave
  343.       end
  344.       when index(text,'*** Additional matches omitted.')==1 then do
  345.       call req('"'locales(MSG_MORETHAN) || length')" "'locales(MSG_OK)'"')
  346.       leave
  347.       end
  348.       when index(text,'Warning: exceeding idle limit.')~=0 then do
  349.       call req('"'locales(MSG_EXEEDED)')" "'locales(MSG_OK)'"')
  350.       leave
  351.       end
  352.    otherwise if text~="" then call addn(compress(text,CRLF))
  353.    end
  354.   end
  355.  
  356. call dlrep(locales(MSG_SEARCHEND))
  357. return('')
  358.  
  359. clear:
  360. drop nodes.
  361. drop bnode.
  362. cnt=0
  363. call topipe('id 'lvw' s 0')
  364. call topipe('id 'lvw' remn')
  365. call topipe('id 'get' dis 1')
  366. call topipe('id 'vrm' dis 1')
  367. noget=1
  368. return
  369.  
  370. addn:
  371.     outt=space(arg(1),1)
  372.     do c=1 to 4; p=index(outt,' '); outt=delstr(outt,p,1); outt=insert('¤',outt,p-1); end
  373.     outt=reps(outt,'*','**')
  374.     outt=reps(outt,'"','*"')
  375.     nn = topipe('id 'lvw' sc="¤" addn gt "'outt'"')
  376.     cnt=cnt+1
  377.     nodes.cnt.node=nn
  378.     nodes.cnt.line=arg(1)
  379.     bnode.nn=cnt
  380.     if arg(2)=='' then call updategauge(cnt,length)
  381. return
  382.  
  383. reps:
  384. ps=1 ;
  385. rt=arg(1)
  386. do while ps>0
  387. ps=index(rt,arg(2),ps)
  388. if ps~=0 then do ; rt=delstr(rt,ps,length(arg(2)))
  389. rt=insert(arg(3),rt,ps-1) ; ps=ps+length(arg(3)) ; end ; end
  390. return rt
  391.  
  392.  
  393. Mhelp:
  394. if in2>0 then; call topipe('bubble top 'in3' left 'in4' gt "'hlp.in2'"')
  395. else; call topipe('bubble')
  396. return
  397.  
  398. Mhlp:
  399. hlp.rec=locales(HLP_REC)
  400. hlp.info=locales(HLP_INF)
  401. hlp.xit=locales(HLP_XIT)
  402. hlp.sch=locales(HLP_SCH)
  403. hlp.vrm=locales(HLP_VRM)
  404. hlp.get=locales(HLP_GET)
  405. hlp.ptn=locales(HLP_PTN)
  406. hlp.hit=locales(HLP_HIT)
  407. hlp.rme=locales(HLP_RME)
  408. hlp.dlp=locales(HLP_DLP)
  409. hlp.sng=locales(HLP_SNG)
  410. hlp.lvw=locales(HLP_LVW)
  411. return
  412.  
  413. initDL:
  414.  
  415. if askdir then do
  416. call writeln(pipe,'id 'rqf' fn="'dir'" gt="'locales(MSG_DL_PATH)'" s 1')
  417. res=readln(pipe)
  418. if word(res,2)==1 then parse var res '"'dir'"' .
  419. end
  420.  
  421. fname='t:AA_'time(s)'.temp'
  422. if ~open(oh,fname,'W') then return(locales(MSG_ERROR) locales(MSG_MAKELIST) file' !')
  423.  
  424. call writeln(oh,'"'ams.site'" "'dir'"')
  425.  
  426.   do c=1 to seld0
  427.   rem=word(seld,c)
  428.   call writeln(pipe,'id 'rem' read sort 0'); amname=readln(pipe)
  429.   call writeln(pipe,'id 'rem' read sort 1'); amtype=readln(pipe)
  430.   lp=lastpos('.',amname)-1
  431.   parse var amname amname +lp +1 ext .
  432.   call writeln(oh,amtype'/'amname'.'ext)
  433.   if readme then call writeln(oh,amtype'/'amname'.readme')
  434.   call topipe('id 'rem' remn');
  435.   end
  436. call close(oh)
  437. call topipe('id 'get' dis 1');
  438. call topipe('id 'vrm' dis 1');
  439. seld0=0
  440. parse var seld . seld
  441. nodeat=0
  442. noget=1
  443.  
  444. if startrx~='' then address command startrx
  445.  
  446. address command 'cd "'progpath'"'LF'run <>nil: rx 'progname' 'fname' MODE=DOWN'
  447. return
  448.  
  449. getfiles:
  450. IF NAME=="" then call exitreq('Error. No file name given !')
  451. IF ~EXISTS(NAME) then call exitreq(locales(MSG_ERROR) locales(MSG_NOPRF1) NAME)
  452.  
  453. if ~open(ih,name) then return('Error. Can''t open download list 'name' !')
  454. ln=readln(ih)
  455. site='http://uk.aminet.net/aminet/'
  456. dir='Ram:'
  457.  
  458. rd=readArgs(ln,'SITE/A,DIR/A')
  459. if rd=0 then exitreq('File Error with 'name)
  460. if right(site,1)~="/" then site=site'/'
  461. c=1
  462. do while ~eof(ih)
  463. ln=readln(ih)
  464. if ln~="" then do
  465. dlisturls.0=c
  466. dlisturls.c=ln
  467. c=c+1
  468. end
  469.  
  470. end
  471. call close(ih)
  472. call delete(name)
  473.  
  474. dlferr=dlfunction()
  475. if dlferr~='' then call req('"'dlferr'" "_OK"')
  476. exit
  477.  
  478. dlfunction:
  479.  
  480. if ~open(pipe,'awnpipe:dl/xc') then return('error opening awnpipe:')
  481. call topipe('"BWS_Download" defg a cs width 400 height 100 m v')
  482.  
  483. call setFontID()
  484. dreq=topipe('getfile gt "Destination dir" fn "'dir'" ua')
  485. call topipe('layout b 0 weih 0')
  486. call topipe('label gt "Destination:" weiw 0')
  487. dstr=topipe('string ro gt "'dir'"')
  488. call topipe('le')
  489.  
  490. list=topipe('listbrowser lbl "URL Queue" v a st')
  491. call topipe('browsernode gt ""')
  492.  
  493. call topipe('layout weih 0 b 0')
  494. info=topipe('fuelgauge cj defn=0 gt ""')
  495. abrt=topipe('button gt "'locales(MSG_ABORT)'" weiw 0')
  496. call topipe('le')
  497.  
  498. call topipe('open')
  499.  
  500. call topipe('id 'list' remn')
  501. call topipe('id 'list' list 0')
  502.  
  503. do count=1 to dlisturls.0
  504. dlisturls.count.bn=topipe('id 'list' addn gt "'dlisturls.count'"')
  505. end
  506. call topipe('id 'list' list 1')
  507. call topipe('id 'abrt' dis 0');
  508.  
  509. do count=1 to dlisturls.0
  510. call topipe('id 'list' s='dlisturls.count.bn' ref')
  511. dlerr=download(site||dlisturls.count,dir)
  512. call topipe('id 'info' defn 0')
  513.  
  514. if dlerr=="" then call topipe('id 'dlisturls.count.bn' remn')
  515. else; return(dlerr)
  516. end
  517. call close(pipe)
  518. return('')
  519.  
  520.  
  521. download:
  522. if checkabort() then return(locales(MSG_ABRTED))
  523.  
  524. parse arg url,dldir
  525. if dldir=='' then dldir=='Ram:'
  526. parse var url '://'host'/'file
  527. file='/'file
  528. p=lastpos('/',file)
  529. parse var file +p filename
  530.  
  531. preinf=filename'. '
  532.  
  533. p=pos(":",host)
  534. if p=0 then port=80
  535. else do
  536.     p=p-1
  537.     parse var host host +p dummy +1 port
  538. end
  539.  
  540. call dlrep("resolving "host"...")
  541. sin.addraddr=resolve(host)
  542. if sin.addraddr=-1 then return("host <"host"> not found")
  543. sin.addrport=port
  544.  
  545. if checkabort() then return(locales(MSG_ABRTED))
  546.  
  547. sock=socket("INET","STREAM")
  548. if sock=-1 then return("can't create socket")
  549.  
  550. if checkabort() then return(locales(MSG_ABRTED))
  551.  
  552. call dlrep("connecting...")
  553. if connect(sock,"SIN")<0 then return("can't connect")
  554.  
  555. if checkabort() then return(locales(MSG_ABRTED))
  556.  
  557. request="GET" strip(file) "HTTP/1.0"CRLF
  558. request=request||CRLF
  559.  
  560. call dlrep("sending request...")
  561. if send(sock,request)<0 then return("error sending")
  562.  
  563. if checkabort() then return(locales(MSG_ABRTED))
  564.  
  565. if recvline(sock,"BUF",256)<0 then return("error receiving")
  566. if buf="" then return("empty answer")
  567. parse var buf http code
  568. if word(code,1)~=200 then return("error from server" code)
  569.  
  570. if checkabort() then return(locales(MSG_ABRTED))
  571.  
  572. call dlrep("receiving header...")
  573.  
  574. do while buf~=FIN
  575.  
  576. select
  577. when upper(word(buf,1))=='CONTENT-LENGTH:' then len=word(compress(buf,CRLF),2)
  578. when upper(word(buf,1))=='CONTENT-TYPE:' then type=word(compress(buf,CRLF),2)
  579. otherwise nop
  580. end
  581.  
  582.     if recvline(sock,"BUF",256)<0 then return("error receiving header")
  583. if checkabort() then return(locales(MSG_ABRTED))
  584. end
  585.  
  586. recvd=0
  587.  
  588. if checkabort() then return(locales(MSG_ABRTED))
  589.  call dlrep("receiving "type" file...")
  590.  resu=recv(sock,"BUF",256)
  591.  recvd=resu
  592.  
  593.  if (right(dldir,1)~='/') & (right(dldir,1)~=':') then dldir=dldir'/'
  594. if checkabort() then return(locales(MSG_ABRTED))
  595.  
  596.  call dlrep("opening:"dldir||filename"..")
  597.  if ~open(oh,dldir||filename,'W') then return("error opening "dldir||filename)
  598.  
  599. call updategauge(recvd,len)
  600.  
  601. if checkabort() then return(locales(MSG_ABRTED))
  602.  
  603. do while resu>0
  604. if checkabort() then return(locales(MSG_ABRTED))
  605.     call writech(oh,buf)
  606.     resu=recv(sock,"BUF",256)
  607.  
  608. if resu>0 then do
  609. recvd=recvd+resu
  610. call updategauge(recvd,len)
  611. end
  612.  
  613. end
  614. call close(oh)
  615. call topipe('id 'info' defn 0');
  616.  
  617. if resu<0 then return("error receiving file "filename)
  618. call dlrep("Download Complete.")
  619. return('')
  620.  
  621. checkabort:
  622. call writeln(pipe,'tick 0'); call readln(pipe)
  623. pret=readln(pipe)
  624.  if pret~='tick' then do
  625.  parse var pret in1 in2 .
  626.  if in1=='gadget' & in2==abrt then return(1)
  627.  end
  628. return(0)
  629.  
  630. topipe:
  631. parse arg out; call writeln(pipe,out)
  632. res=readln(pipe)
  633. parse var res res1 res2 .
  634.  if res1='ok' then return(res2)
  635.  say 'error from: 'out; say '  responce: ' res
  636.  exit
  637.  
  638. dlrep:
  639. if arg(1)~='' then call topipe('id 'info' gt "'arg(1)'"')
  640. else; call topipe('id 'info' defn 0 gt "'labinfo'"')
  641. return
  642.  
  643. updategauge:
  644.  per = 100 * ( arg(1) / arg(2) ) ;
  645.  dotp = index(per,'.'); if dotp~=0 then per=left(per,dotp-1)
  646.  call topipe('id 'info' defn 'per' gt "'preinf' ('per'%) 'arg(1)'/'arg(2)'"')
  647. return
  648.  
  649.  
  650.  
  651. getfont:
  652. lfont=''; gfont=''
  653. call open(th,'awnpipe:tooltypes/xi'prog)
  654. DO while ~eof(th)
  655. tln=readln(th)
  656. IF index(upper(tln),'GADGET_FONT=')==1 then parse var tln +12 gfont'/'gfsize .
  657. IF index(upper(tln),'LIST_FONT=')==1 then parse var tln +10 lfont'/'lfsize .
  658. end
  659. return
  660.  
  661. setFontID:
  662. if gfont~='' then do
  663. call writeln(pipe,'TextAttr gt "'gfont'" defn 'gfsize'');
  664. tmp=readln(pipe); parse var tmp . gfontid gfontA .
  665. gfontid='font 'gfontid
  666. end; else; gfontid=''
  667.  
  668. if lfont~='' then do
  669. call writeln(pipe,'TextAttr gt "'lfont'" defn 'lfsize'');
  670. tmp=readln(pipe); parse var tmp . lfontid lfontA .
  671. lfontid='font 'lfontid
  672. end; else; lfontid=''
  673. return
  674.  
  675.  
  676.  
  677. req:
  678.  parse arg args
  679. PUBSCREEN=screen
  680. call readargs(args,'BODY,GADGETS/M,PUBSCREEN/K')
  681. if body=="" | body=='BODY' then BODY='Are you sure ?'
  682. if GADGETS.COUNT==0 | GADGETS.COUNT=='GADGETS.COUNT' then do;
  683. GADGETS.0=locales(MSG_YES); GADGETS.1=locales(MSG_NO); GADGETS.COUNT=2; end
  684. if ~open('req','awnpipe:AWNPChoice'time(s)'/xc') then exit(2)
  685. call toreq('"'DEFTITLE'" width 150 sk m db dg v a ps "'PUBSCREEN'"')
  686. p=1; do while p>0; p=index(body,'0A'X); if p~=0 then do; body=delstr(body,p,1); body=insert('*n',body,p-1); end; end
  687. call toreq('layout si so cj b 5'); call toreq('space'); call toreq('label gt "*n'body'*n" underscore="'scre'"'); call toreq('space'); call toreq('le')
  688. spos=toreq('layout cj si so b 1'); if GADGETS.COUNT == 1 then call toreq('space')
  689. do c=0 to GADGETS.COUNT - 1; call toreq('button weiw 0 gt "'GADGETS.c'" c'); end
  690. if GADGETS.COUNT == 1 then call toreq('space'); call toreq('le')
  691. call toreq('open')
  692.  do while ~eof('req')
  693.  call toreq('con')
  694.  in=readln('req')
  695.  parse var in in1 in2 in3 in4 in5
  696.   select
  697.   when in1=='gadget' then if in2==(spos + GADGETS.COUNT) then ans=0; else; ans=in2-spos
  698.    when in1=='key' & (in2==68 | in2==69) then do; ans=(in2==68);  call close('req'); return ans;end
  699.   otherwise nop
  700.   end
  701.  end
  702. call close('req')
  703. return ans
  704.  
  705. toreq: parse arg out; call writeln('req',out); res=readln('req'); parse var res res1 res2 .; if res1='ok' then return(res2); say 'error from: 'out; say '  responce: ' res; exit
  706.  
  707. do_srvlst:
  708. srvlst='"'
  709. do c=1 to ams0;
  710. parse var ams.c '://'adr'/' .
  711. srvlst=srvlst'('c')'copies(' ',2-length(c))||adr'|'; end
  712. srvlst=substr(srvlst,1,length(srvlst)-1)'"'
  713. return srvlst
  714.  
  715. infoline:
  716. if index(amname,'-------')==1 then; return 1; return 0
  717.  
  718. viewr:
  719. if infoline() then return req('"" "'locales(MSG_ERROR)'*n'locales(MSG_NOFILESEL)'" "'locales(MSG_OK)'"')
  720. do c=1 to seld0
  721. call writeln(pipe,'id 'word(seld,c)' read sort 0'); amname=readln(pipe)
  722. call writeln(pipe,'id 'word(seld,c)' read sort 1'); amtype=readln(pipe)
  723. rmename=substr(amname,1,length(amname)-3)'readme'
  724.  
  725. if startrx~='' then address command startrx
  726.  
  727. dlerr=download(ams.site||amtype'/'rmename,'T:')
  728. if dlerr=="" then do
  729. call topipe('id 0 s 256')
  730. call topipe('id 'info' defn 0')
  731. call open(vh,'awnpipe:viewreadme/xc'); te=c*11
  732. call writeln(vh,'"T:'rmename'" width 'scrw' height 200 left 0 top 'te' cg dg sg db ig v a')
  733. call writeln(vh,'textfield gt 0 arrows ro bd datain "T:'rmename'"')
  734. call writeln(vh,'open')
  735. call readln(vh);call readln(vh);call readln(vh);
  736. call close(vh)
  737. call topipe('id 0 s 512')
  738. call delete('t:'rmename)
  739. end
  740. else; call req('"Unable to get 'ams.site||amtype'/'rmename'" "_OK"')
  741. end
  742. return
  743.  
  744. /* Settings window...*/
  745. prefs:
  746. call open(sh,'awnpipe:servers/xc')
  747. parse var PWIN pwinl pwint pwinw pwinh .
  748. call topipe('id 0 s 128')
  749. call topipe2('"'locales(MSG_AMIPRF)'" defg a m left='pwinl' top='pwint' width='pwinw' height 'pwinh'')
  750.  
  751. rqf =topipe2('getfile ua pattern="#?.(rx|rexx)"')
  752.  call topipe2('layout v b 5 labl gt "  'locales(MSG_AMIADR)' "')
  753.  lb2 =topipe2('listbrowser a 'lfontid' h')
  754.  htps=topipe2('string weih 0 'gfontid' lj tc')
  755.   call topipe2('layout weih 0 'gfontid' b 5')
  756.   adg =topipe2('button tc gt "'locales(MSG_ADDSERV)'"')
  757.   rmg =topipe2('button tc gt "'locales(MSG_REMSERV)'"')
  758.   call topipe2('le')
  759.  call topipe2('le')
  760.  
  761.  call topipe2('layout 'gfontid' weiw 0 v b 0')
  762.  call topipe2('space')
  763.   call topipe2('layout 'gfontid' weih 0 b 0')
  764.   call topipe2('label gt "*n 'locales(LAB_ONRET)': "')
  765.   onr =topipe2('checkbox s 'ONRETURN)
  766.   call topipe2('le')
  767.  
  768.   call topipe2('space')
  769.  
  770.   call topipe2('layout labl weih 0 gt "  'locales(MSG_EVENTS)' " v b 5 si so')
  771.   call topipe2('layout weih 0 b 0')
  772.   srxb=topipe2('button weiw 0 gt "'locales(MSG_ONCOM)'"')
  773.   srxg=topipe2('string 'gfontid' lj tc gt "'reps(startrx,'"','*"')'"')
  774.   call topipe2('le')
  775.  
  776.   call topipe2('layout weih 0 b 0')
  777.   erxb=topipe2('button weiw 0 gt "'locales(MSG_OFFCOM)'"')
  778.   erxg=topipe2('string 'gfontid' lj tc gt "'reps(endrx,'"','*"')'"')
  779.   call topipe2('le')
  780.  call topipe2('space')
  781.  call topipe2('le')
  782.  
  783. call topipe2('open')
  784. call snodes()
  785. call diss(1)
  786.  
  787.   do while ~eof(sh)
  788.   call writeln(sh,'id 0 read'); PWIN=readln(sh);
  789.   call topipe2('con')
  790.   ln=readln(sh)
  791.   parse var ln in1 in2 in3 in4 in5 in6 .
  792.   if in1=='gadget' then call sgads()
  793.   else; nop
  794.   end
  795. call close(sh)
  796. SetIn=""
  797. call topipe('id 0 s 64')
  798. return
  799.  
  800. sreqfile:
  801. fm=(arg(1)==srxg)
  802. if fm then ret=startrx; else; ret=endrx
  803.  
  804. call writeln(sh,'id 'rqf' fn="'ret'" gt="Select 'word('Offline Online',fm+1)' Command" s 1')
  805. res=readln(sh)
  806. if word(res,2)==1 then do
  807. parse var res '"'ret'"' .
  808. call topipe2('id 'arg(1)' gt "'ret'" ref')
  809. end
  810. return(ret)
  811.  
  812. sgads:
  813.  select
  814.  when in2==onr then ONRETURN=in3
  815.  when in2==srxg then startrx=substr(ln,length(srxg)+9)
  816.  when in2==erxg then endrx=substr(ln,length(erxg)+9)
  817.  when in2==srxb then startrx=sreqfile(srxg)
  818.  when in2==erxb then endrx=sreqfile(erxg)
  819.  when in2==lb2 then call seld(in5)
  820.          when in2==htps then do
  821.              if in3~=ams.sat then do
  822.              ams.sat=in3
  823.             call topipe2('id 'SetIn' gt "'ams.sat'"')
  824.           call topipe('id 'sng' cl 'do_srvlst()'')
  825.           call topipe2('id 'lb2' sort 0')
  826.           call topipe2('id 'lb2' s 'SetIn'')
  827.              if sat==site then parse var ams.sat '://'amd'/' .
  828.              chsite=1
  829.              end
  830.         end
  831.      when in2==adg then do
  832.      ams0=ams0+1; ams.ams0='http://'
  833.      sat=ams0
  834.      nm=topipe2('id 'lb2' addn gt "'ams.ams0'"')
  835.      snode.nm=ams0
  836.      call topipe2('id 'lb2' s 'nm);call seld(nm)
  837.    call topipe('id 'sng' cl 'do_srvlst()'')
  838.    chsite=1
  839.      end
  840.  
  841.      when in2==rmg then do;
  842.      call topipe2('id 'lb2' s=0')
  843.      do c=sat to ams0; c1=c+1
  844.    if c==ams0 then ams.c=""
  845.    else; ams.c=ams.c1
  846.    end
  847.      ams0=ams0-1
  848.      call snodes()
  849.      call topipe('id 'sng' cl 'do_srvlst()'')
  850.      call topipe2('id 'htps' gt "" ref');
  851.      call diss(1);
  852.      SetIn=""
  853.      chsite=1;
  854.      end
  855.  otherwise nop
  856.  end
  857. return
  858.  
  859. snodes:
  860. drop snode.
  861. call topipe2('id 'lb2' remn');
  862. call topipe2('id 'lb2' list 0');
  863.  do c=1 to ams0
  864.  num=topipe2('id 'lb2' addn gt "'ams.c'"')
  865.  snode.num=c
  866.  end
  867. call topipe2('id 'lb2' list 1');
  868. return
  869.  
  870. seld:
  871.  if SetIn=="" then call diss(0)
  872.  SetIn=arg(1)
  873.  sat=snode.SetIn
  874.  call topipe2('id 'htps' gt "'ams.sat'" ref')
  875. return
  876.  
  877. diss:
  878. di=arg(1)
  879. call topipe2('id 'htps' dis 'di' ref')
  880. if ams.sat=="" | ams.ams0==1 then do; di=1; SetIn=""; end
  881. call topipe2('id 'rmg' dis 'di' ref')
  882. return
  883.  
  884. topipe2:
  885. parse arg out
  886. call writeln(sh,out); res=readln(sh)
  887. parse var res res1 res2 .
  888. if res1='ok' then return(res2)
  889. say 'error from: 'out; say '  responce: ' res; exit
  890.  
  891.  
  892. loadprefs:
  893.  if ~exists( prefsname ) then do
  894.  LENGTH=20; DIR='Ram:'; SITE=3; ONRETURN=0; BUBBLE=1; README=1; ASKDIR=1; WIN='0 10 'scrW' 100';  PWIN='0 10 'scrW' 100';
  895.  startrx=''; endrx=''
  896.  ams.1='http://ftp.uni-paderborn.de/~aminet/dirs/aminet/'
  897.  ams.2='http://ftp.wustl.edu/~aminet/dirs/aminet/'
  898.  ams.3='http://uk.aminet.net/aminet/dirs/aminet/'
  899.  ams0=3
  900.  if req('"'locales(MSG_NoPrf1)'*n'prefsname'*n'locales(MSG_NoPrf2)'"') then call saveprefs()
  901.  end
  902.  
  903.  if open(ph,prefsname) then do
  904.  pl=readln(ph)
  905.  call readargs(pl,'LENGTH/N,DIR/K,SITE/N,BUBBLE/T,README/T,ASKDIR/T,ONRETURN/T,WIN/K,PWIN/K')
  906.  ams0=0
  907.   ln=readln(ph)
  908.     if ln=='[EVENTS]' then do
  909.     startrx=readln(ph);
  910.     endrx=readln(ph)
  911.     ln=readln(ph)
  912.     end
  913.     else do
  914.     startrx=''; endrx=''
  915.     end
  916.   do while ~eof(ph)
  917.     if ln~="" then do
  918.     ams0=ams0+1
  919.      if index(ln,' ')~=0 then; parse var ln . ams.ams0 .
  920.      else; ams.ams0=ln
  921.     end
  922. if ~eof(ph) then ln=readln(ph)
  923.   end
  924.   call close(ph)
  925.   end
  926.   site=min(ams0,max(site,1,site))
  927.   parse var ams.site '://'amd'/' .
  928.  
  929. call storedefs()
  930. return
  931.  
  932. saveprefs:
  933.  if ~open(ph,prefsname,'W') then do;
  934.  call req('"'locales(MSG_ERROR)'*n'locales(MSG_SAVEP)'" "'locales(MSG_OK)'"'); return;
  935.  end;
  936. call writeln(ph,'LENGTH 'length' DIR "'dir'" SITE 'site' BUBBLE='word('OFF ON',bubble+1)' README 'word('OFF ON',readme+1)' ASKDIR 'word('OFF ON',askdir+1)' ONRETURN 'word('OFF ON',ONRETURN+1)' WIN "'WIN'" PWIN "'PWIN'"')
  937. call writeln(ph,'[EVENTS]' || lf || startrx); call writeln(ph,endrx)
  938. do c=1 to ams0
  939. call writeln(ph,ams.c)
  940. end
  941. call close(ph)
  942. return
  943.  
  944. storedefs:
  945. O_LENGTH=LENGTH
  946. O_README=README
  947. O_DIR=DIR
  948. O_ASKDIR=ASKDIR
  949. O_SITE=SITE
  950. O_BUBBLE=BUBBLE
  951. O_WIN=WIN
  952. O_PWIN=PWIN
  953. O_STARTRX=STARTRX
  954. O_ENDRX=ENDRX
  955. O_ONRETURN=ONRETURN
  956. return
  957.  
  958. newver:
  959. got=0
  960. preinf='Getting Version list.'
  961. if startrx~='' then address command startrx
  962.   if download('http://web.ukonline.co.uk/bsteers/versions.dat','T:')=="" then do
  963.   call open(dh,'t:versions.dat')
  964.     do while ~eof(dh) & got==0
  965.     dln=readln(dh)
  966.     if word(dln,2)=='Aminet.awnp' then got=1
  967.     end
  968.   call close(dh)
  969.   call delete('t:versions.dat')
  970.   if got==0 then do; call req('"'locales(MSG_NOVERINF)'" "'locales(MSG_OK)'"');return; end
  971.     if word(dln,3)>vern then do
  972.     st=locales(MSG_NEWVER)
  973.     st=insert(' 'word(dln,3),st,index(st,'*n')-1)
  974.       if req('"'st'" "'locales(MSG_DOWNLOAD)'" "'locales(MSG_LEAVE)'"') then do
  975.       if reqdir('ram:') then call download(substr(dln,index(dln,')')+2))
  976.       end
  977.     end
  978.   else;  call req('"'locales(MSG_LATEST)'" "'locales(MSG_OK)'"')
  979.   end
  980. return
  981.  
  982. recent:
  983. day=2
  984. call clear()
  985.  
  986. gotrecent=exists('t:RECENT')
  987.  if gotrecent then do
  988.    if req('"'locales(MSG_GOTRECENT)'" "'locales(GAD_USET)'" "'locales(GAD_REGET)'"')==0 then do
  989.    call delete('t:RECENT')
  990.    gotrecent=0
  991.    end
  992.  end
  993.  
  994. preinf='Getting RECENT list.'
  995. if startrx~='' then address command startrx
  996.  
  997.     if gotrecent==0 then do
  998.     dlerr=download(ams.site'RECENT','T:')
  999.      if dlerr~="" then do
  1000.      call req('"'locales(MSG_ERROR)'*n'locales(MSG_NORECENT)'*n*n'dlerr'" "'locales(MSG_OK)'"')
  1001.      call dlrep()
  1002.      return
  1003.      End
  1004.     End
  1005.  
  1006.  
  1007.    call dlrep(locales(MSG_READREC))
  1008.     call open('th','T:RECENT')
  1009.     call readln('th'); call readln('th'); call readln('th'); call readln('th'); call readln('th');
  1010.     lines=0; locday=locales(MSG_DAY)
  1011.     call topipe('id 'lvw' remn');
  1012.     call topipe('id 'lvw' list 0');
  1013.         call addn('-------'locday'-1------ ---        ---- --- ---'locday'-1---',0)
  1014.         do while ~eof('th')
  1015.         text=readln('th')
  1016.         if substr(text,35,1)=='+' then do;           text=insert('  ',insert('  ',text,34),37); lines=lines+1; end
  1017.          else do;if ~eof('th') then;text='-------'locday'-'day'------ ---        ---- --- ---'locday'-'day'---'; else; text='------------------ ---        ---- --- -----------'; day=day+1; end
  1018.         call addn(text,0)
  1019.         end
  1020.     call topipe('id 'lvw' list 1');
  1021.     call close('th')
  1022.  
  1023. call dlrep()
  1024. return
  1025.  
  1026.  
  1027. BuildStrings:
  1028.  
  1029. /*  Read default strings, open locale.library and catalog
  1030. Thanks to Nils Goers for letting me use this code from his WB tool T.H.E
  1031. */
  1032. CALL BuildInLanguage()            /* install build-in language */
  1033. IF ~SHOW('l','locale.library') THEN CALL ADDLIB('locale.library',0,-30,0)
  1034. IF SHOW('l','locale.library') THEN DO
  1035.     catalog=0
  1036.     id='req'pragma('id')                /* get current language */
  1037.     address command 'rxset' id '`echo $language`'
  1038.     language=getclip(id)
  1039.     call setclip(id,'')
  1040.    IF (language ~= '') & (language~='$language') THEN DO
  1041.     catalog = OPENCATALOG(progpath'catalogs/'language'/Aminet.awnp.catalog','english',0)
  1042.         IF catalog == 0 THEN
  1043.     catalog = OPENCATALOG(progpath'Aminet.awnp.catalog','english',0)
  1044.    END
  1045.  
  1046.    IF catalog == 0 THEN
  1047.     catalog = OPENCATALOG('Aminet.awnp.catalog','english',0)
  1048. END
  1049. RETURN
  1050.  
  1051. locales:   PARSE ARG stringnumber
  1052. IF stringnumber=="" then Return('LocaleErr')
  1053.  IF catalog ~= 0 THEN; RETURN(GETCATALOGSTR(catalog,stringnumber,strings.stringnumber))
  1054.  ELSE; RETURN(strings.stringnumber)
  1055.  
  1056. BuildInLanguage:
  1057. MSG_ERRORWITH   = 0 ; strings.0  ='Error With.. '
  1058. MSG_ARGHELP     = 1 ; strings.1  ='ReadArgs Syntax: for Aminet.awnp'
  1059. MSG_NOPRF1      = 2 ; strings.2  ='did not find file'
  1060. MSG_NOPRF2      = 3 ; strings.3  ='Should I Create a New one ?'
  1061. MSG_CHPRF       = 4 ; strings.4  ='The Following Settings Have Changed*nSelect Yes to Remember Changes'
  1062. MSG_YES         = 5 ; strings.5  ='_Yes'
  1063. MSG_NO          = 6 ; strings.6  ='_No'
  1064. MSG_OK          = 7 ; strings.7  ='_OK'
  1065. MSG_SELFUNC     = 8 ; strings.8  ='Select A function'
  1066. MSG_VIEWR       = 9 ; strings.9  ='_View Readme'
  1067. MSG_GET         = 10; strings.10 ='_Get'
  1068. MSG_ABORT       = 11; strings.11 ='_Abort'
  1069. MSG_SEARCHFIND  = 12; strings.12 ='Searcher/Finder'
  1070. MNU_MENU        = 13; strings.13 ='Main|@?About Aminet.awnp|-|@B^¶Bubble Help|-|@SSettings|-|@Vcheck www for Newer Version|-|@QQuit'
  1071. MSG_DL_PATH     = 14; strings.14 ='Download Path'
  1072. MSG_LISTLABELS  = 15; strings.15 ='Archive Name|Type|Size|Age|Info'
  1073. MSG_RECENT      = 16; strings.16 ='Re_cent'
  1074. MSG_SEARCH      = 17; strings.17 ='_Search'
  1075. LAB_MAXHITS     = 18; strings.18 ='MaxHits'
  1076. MSG_README      = 19; strings.19 ='_View'
  1077. LAB_GETR        = 20; strings.20 ='Readme'
  1078. LAB_ASKD        = 21; strings.21 ='Ask Dir'
  1079. MSG_QUIT        = 22; strings.22 ='_Quit'
  1080. MSG_CON2        = 23; strings.23 ='Connecting to'
  1081. MSG_OKSENDING   = 24; strings.24 ='Connected .. Sending search info'
  1082. MSG_READREP     = 25; strings.25 ='Reading Replies'
  1083. MSG_SEARCHING   = 26; strings.26 ='Searching ....'
  1084. MSG_NOMATCH     = 27; strings.27 ='*nThis name did not return any matches*n(OR maybe the server isn''t Working ?)'
  1085. MSG_MORETHAN    = 28; strings.28 ='Note...*nSearch found more entries than*nthe Specified ('
  1086. MSG_SEARCHEND   = 29; strings.29 ='Search Has Finished...'
  1087. MSG_GETTING     = 30; strings.30 ='Getting'
  1088. MSG_SAVEAS      = 31; strings.31 ='Saving As'
  1089. MSG_NOFILESEL   = 32; strings.32 ='You Don''t have a file selected!'
  1090. MSG_ERROR       = 33; strings.33 ='Error !!!'
  1091. MSG_AMIPRF      = 34; strings.34 ='Aminet Server Settings'
  1092. MSG_AMIADR      = 35; strings.35 ='Addresses of Aminet Sites'
  1093. MSG_ADDSERV     = 36; strings.36 ='_Add New Server'
  1094. MSG_REMSERV     = 37; strings.37 ='_Remove Server'
  1095. MSG_SAVEP       = 38; strings.38 ='Saving Prefs'
  1096. MSG_NOVERINF    = 39; strings.39 ='An unknown error has occured :(*nCan not find any*ninfo for this program.'
  1097. MSG_NEWVER      = 40; strings.40 ='A Newer Version*nIs Currently Available :)'
  1098. MSG_DOWNLOAD    = 41; strings.41 ='_Download'
  1099. MSG_LEAVE       = 42; strings.42 ='_Leave Alone'
  1100. MSG_LATEST      = 43; strings.43 ='You have the Latest Version :)'
  1101. MSG_INCHITS     = 44; strings.44 ='hits may not be enough for the whole RECENT file*nShould it be Increased to a temporary length of 300 ?'
  1102. MSG_NORECENT    = 45; strings.45 ='Unable to download RECENT file :('
  1103. MSG_DAY         = 46; strings.46 ='Day'
  1104. HLP_REC             = 47; strings.47 ='View the last 7 days*nRecent Uploads list'
  1105. HLP_INF             = 48; strings.48 ='Info window'
  1106. HLP_XIT             = 49; strings.49 ='Quit program'
  1107. HLP_SCH             = 50; strings.50 ='Start Search'
  1108. HLP_VRM             = 51; strings.51 ='Read the Readme file'
  1109. HLP_GET             = 52; strings.52 ='Download Selected File'
  1110. HLP_PTN             = 53; strings.53 ='Set search string'
  1111. HLP_HIT             = 54; strings.54 ='Maximum number of results'
  1112. HLP_RME             = 55; strings.55 ='Also get Readme file'
  1113. HLP_DLP             = 56; strings.56 ='Ask for new Download path'
  1114. HLP_SNG             = 57; strings.57 ='Aminet Site'
  1115. HLP_LVW             = 58; strings.58 ='Archive List'
  1116. MSG_READREC         = 59; strings.59 ='Parsing RECENT File'
  1117. MSG_FEXISTS     = 60; strings.60 ='File Already Exists !'
  1118. MSG_OVERWRITE   = 61; strings.61 ='_Overwrite'
  1119. MSG_APPEND      = 62; strings.62 ='_Add'
  1120. MSG_SKIP        = 63; strings.63 ='_Skip'
  1121. MSG_EVENTS      = 64; strings.64 ='Commands run on events'
  1122. MSG_ONCOM       = 65; strings.65 ='Online'
  1123. MSG_OFFCOM      = 66; strings.66 ='Offline'
  1124. MSG_EXEEDED     = 67; strings.67 ='Warning: exceeded this servers idle limit.*n *n(You may want to try another Server'
  1125. LAB_ONRET       = 68; strings.68 ='Start search on hitting ''RETURN'''
  1126. RDA_NAM         = 69; strings.69 ='The Search string (no need to type NAME just give a search pattern)'
  1127. RDA_LEN         = 70; strings.70 ='The maximum amount of search results.'
  1128. RDA_DIR         = 71; strings.71 ='The Default Download Dir'
  1129. RDA_SIT         = 72; strings.72 ='Number of the site. Numbers are given in Server Chooser gadget.'
  1130. RDA_REA         = 73; strings.73 ='README=ON or YES to download readme files too, OR README=OFF or NO.'
  1131. RDA_ASK         = 74; strings.74 ='ASKDIR=YES OR ON pop up a Dir Requester and Change the default dir.'
  1132. RDA_BUB         = 75; strings.75 ='BUBBLE=ON or YES to have bubble help on at startup.'
  1133. RDA_WAI         = 76; strings.76 ='ADD to args if you don''t want to auto start searching at startup.'
  1134. RDA_ONR         = 77; strings.77 ='Starts the search when pressing the return gadget.'
  1135. MSG_GOTRECENT   = 78; strings.78 ='File T:RECENT Already Exists!*nPress ''Use-T:RECENT'' To Re-Get the file from the server*nor ''Re-Get'' to Download the file Again.'
  1136. GAD_USET        = 79; strings.79 ='_Use T:RECENT'
  1137. GAD_REGET       = 80; strings.80 ='_Re-Get'
  1138. MSG_SDIMS       = 81; strings.81 ='Search Window Dimentions'
  1139. MSG_PDIMS       = 82; strings.82 ='Prefs Window Dimentions'
  1140. MSG_GETR        = 83; strings.83 ='Auto Get Readme'
  1141. MSG_POPD        = 84; strings.84 ='popup download dir requester'
  1142. MSG_DEFS        = 85; strings.85 ='Default Aminet Site'
  1143. MSG_BUBL        = 86; strings.86 ='Show Bubble Help'
  1144. MSG_ABRTED      = 87; strings.87 ='Process Aborted'
  1145. MSG_SOCK        = 88; strings.88 ='can''t create Socket!'
  1146. MSG_RESLV       = 89; strings.89 ='Resolving'
  1147. MSG_SENDSOCK    = 90; strings.90 ='Sending data to Socket'
  1148. MSG_RESVSOCK    = 91; strings.91 ='Reciving data from Socket'
  1149. MSG_MAKELIST    = 92; strings.92 ='Can''t Create Download List!'
  1150. RETURN
  1151.  
  1152.